table of contents
DIFF(1) | Narzędzia GNU | DIFF(1) |
NAZWA¶
diff - szukanie różnic pomiędzy dwoma plikami
SKŁADNIA¶
diff [opcje] plik1 plik2
OPIS¶
Dokumentacja niniejsza nie jest już utrzymywana i może być niedokładna lub niekompletna. Autorytatywnym źródłem jest obecnie dokumentacja Texinfo. Dostęp do niej uzyskasz wpisując w wierszu poleceń:
Jeśli plik1 jest katalogiem a plik2 nie, diff porównuje plik z katalogu plik1, którego nazwa jest taka sama, jak plik2, i odwrotnie. Plik nie będący katalogiem nie może być -.
Jeśli zarówno plik1 jak i plik2 są katalogami, diff porównuje odpowiednie pliki w obu katalogach, w kolejności alfabetycznej. To porównanie nie jest rekurencyjne, chyba że podano opcję -r lub --recursive. diff nigdy nie porównuje zawartości katalogu tak, jakby był on plikiem. Podany plik nie może być standardowym wejściem, ponieważ standardowe wejście nie ma nazwy i nie dotyczy go zapis `plik o tej samej nazwie'.
Opcje diff na ogół zaczynają się od -, więc zwykle nazwy plików plik1 oraz plik2 nie mogą zaczynać się od -, jednak argument -- traktuje pozostałe argumenty jako nazwy plików, nawet jeśli zaczynają się one od -.
OPCJE¶
Poniżej znajduje się podsumowanie wszystkich opcji akceptowanych przez GNU diff. Większość opcji posiada dwie równoważne formy, jedną z nich jest pojedyncza litera poprzedzona kreską -, a drugą pełna nazwa poprzedzona przez --. Wiele pojedynczych liter opcji (nie wymagających argumentu) może być łączonych w pojedynczym słowie: `-ac' jest równoważne z `-a -c'. Opcje w formie pełnej nazwy mogą być skracane do dowolnego unikalnego przedrostka. Klamry ([ i ]) oznaczają, że opcja pobiera opcjonalny argument.
- -i
-
- --ignore-case
- Ignorowanie zmian w wielkości liter, duże i małe litery są uznawane za równoważne.
- -w
-
- --ignore-all-space
- Ignorowanie wszystkich odstępów przy porównywaniu plików.
- -b
-
- --ignore-space-change
- Ignorowanie zmian w ilości odstępów.
- -B
-
- --ignore-blank-lines
- Ignorowanie zmian, które jedynie dodają lub usuwają puste linie.
- -I regexp
-
- --ignore-matching-lines=regexp
- Ignorowanie zmian, które jedynie dodają lub usuwają linie pasujące do wyrażenia regularnego regexp.
- --binary
- diff normalnie czyta i zapisuje wszystkie dane jako tekst. Ta opcja
wymusza odczyt i zapis danych w trybie binarnym. Nie ma efektu na
systemach zgodnych z POSIX, jak GNU czy tradycyjne Uniksy. Jednak wiele
systemów operacyjnych komputerów osobistych oznacza koniec
linii dwuznakową sekwencją: znakiem powrotu karetki plus
znak nowej linii. Na takich systemach diff normalnie ignoruje
powroty karetki na wejściu i generuje je na końcu
każdej linii wyjściowej, ale z opcją --binary
traktuje powrót karetki jak każdy inny znak wejściowy
i nie dokłada go na końcu tworzonych linii. Przydatne do
operowania na plikach nie-tekstowych, które mają być
wymieniane z systemami POSIX-owymi.
Do porównywania dwu plików bajt po bajcie służy polecenie cmp(1). - -a
-
- --text
- Traktowanie wszystkich plików jako pliki tekstowe i porównywanie ich linia po linii, nawet jeśli nie wyglądają one na pliki tekstowe.
- -c
-
- -C linie
-
- --context[=linie]
- Użycie kontekstowego formatu wyjściowego z pokazaniem ilości linii kontekstu podanej w linie (wartość całkowita), lub trzy jeśli nie podano linie. Do prawidłowego działania patch potrzebuje co najmniej dwóch linii kontekstu.
- -u
-
- -U linie
-
- --unified[=linie]
- Użycie zunifikowanego formatu wyjściowego i pokazanie ilości linii kontekstu podanej w linie (wartość całkowita), lub trzy jeśli nie podano linie. Do prawidłowego działania patch potrzebuje co najmniej dwóch linii kontekstu.
- -linie
- Wyświetlenie ilości linii kontekstu podanej w linie (wartość całkowita). Ta opcja nie ustala wyjściowego formatu, nie ma ona efektu jeśli nie podano opcji -c lub -u. Ta opcja jest przestarzała. Do prawidłowego działania patch potrzebuje co najmniej dwóch linii kontekstu.
- -L etykieta
-
- --label=etykieta
- Użycie tekstu etykieta w miejsce nazwy plików w nagłówku formatu kontekstowego i zunifikowanego.
- -p
-
- --show-c-function
- Pokazanie, do jakiej funkcji C należy każda ze zmian.
- -F regexp
-
- --show-function-line=regexp
- Pokazanie ostatniej poprzedzającej linii, która pasuje do wyrażenia regularnego regexp dla każdego różniącego się fragmentu w formacie kontekstowym i zunifikowanym.
- -q
-
- --brief
- Poinformowanie jedynie o tym, czy pliki się różnią, bez podawania szczegółów na temat różnic.
- -e
-
- --ed
- Stworzenie wyjścia, które jest poprawnym skryptem ed.
- -f
-
- --forward-ed
- Stworzenie wyjścia, które wygląda prawie tak jak skrypt ed, ale zawiera modyfikacje w kolejności pojawiania się zmian w pliku.
- -n
-
- --rcs
- Wyprowadzenie różnic w formacie RCS, tak jak -f, z tym wyjątkiem, że każda komenda wyszczególnia numer linii, której dotyczy.
- -y
-
- --side-by-side
- Użycie formatu wyjściowego jeden obok drugiego.
- -W kolumny
-
- --width=kolumny
- Użycie szerokości wyjścia kolumny w formacie jedna obok drugiej.
- --left-column
- Wyświetlenie jedynie lewej kolumny z dwóch wspólnych w formacie jedna obok drugiej.
- --suppress-common-lines
- Nie wyświetlanie wspólnych linii w formacie jedna obok drugiej.
- -D nazwa
-
- --ifdef=nazwa
- Stworzenie połączonego wyjścia w formacie preprocesora nazwa.
- --old-group-format=formatgrupy
- Użycie formatu formatgrupy do wyprowadzenia grupy linii wziętej jedynie z pierwszego pliku. Pomocne w tworzeniu plików wynikowych o konstrukcji typu if-then-else.
- --new-group-format=formatgrupy
- Użycie formatu formatgrupy do wyprowadzenia grupy linii wziętej jedynie z drugiego pliku. Pomocne w tworzeniu plików wynikowych o konstrukcji typu if-then-else.
- --changed-group-format=formatgrupy
- Użycie formatu wyjściowego formatgrupy do wyświetlania grupy linii zawierających różniące się linie z obu plików. Pomocne w tworzeniu plików wynikowych o konstrukcji typu if-then-else.
- --unchanged-group-format=formatgrupy
- Użycie formatu formatgrupy do wyprowadzenia wspólnej grupy linii wziętej z obu plików. Pomocne w tworzeniu plików wynikowych o konstrukcji typu if-then-else.
Format grupy linii
W formacie określającym sposób wypisania grupy linii
zwykłe znaki oznaczają same siebie; specyfikacje konwersji
zaczynają się od znaku procentu % i mają
jedną z poniższych postaci:
- %<
- linie z plik1, łącznie z końcowym znakiem nowej linii, formatowane zgodnie z formatem starych linii
- %>
- linie z plik2, formatowane zgodnie z formatem nowych linii
- %=
- linie wspólne dla obu plików, formatowane zgodnie z formatem linii niezmienionych
- %[-][szer][.[dokł]]{doxX}litera
- wartość określona literą, sformatowana
w stylu printf. litery mają, w odniesieniu do grup linii w
nowym pliku, następujące znaczenie (dla grup w starym pliku
używa się małych liter):
F numer pierwszej linii
L numer ostatniej linii
N ilość linii = L-F+1
E F-1
M L+1 - %%
- pojedynczy dosłowny znak procentu %.
- %c'C'
- gdzie C jest pojedynczym znakiem, oznacza C. Nie może to być odwrotny ukośnik ani apostrof. Na przykład, %c':' oznacza dwukropek, nawet wewnątrz części then formatu if-then-else, którą normalnie by kończył.
- %c'\O'
- gdzie O jest łańcuchem 1, 2 lub 3 cyfr ósemkowych, oznacza znak o kodzie ósemkowym O. Na przykład, %c'\0' oznacza znak null.
- (A=B?T:E)
- Jeśli A równa się B, to T, w przeciwnym razie E. A i B są albo obie stałymi podanymi dziesiętnie albo pojedynczymi literami, interpretowanymi jak wyżej.
- --line-format=formatlinii
- Użycie formatu formatlinii do wyprowadzenia wszystkich linii. To samo, co równoczesne użycie wszystkich opcji formatowania linii (--old-line-format, --new-line-format, --unchanged-line-format) z tym samym formatem. Pomocne w tworzeniu plików wynikowych o konstrukcji typu if-then-else.
- --old-line-format=formatlinii
- Użycie formatu formatlinii do wyprowadzenia linii wziętej jedynie z pierwszego pliku. Pomocne w tworzeniu plików wynikowych o konstrukcji typu if-then-else.
- --new-line-format=formatlinii
- Użycie formatu formatlinii do wyprowadzenia linii wziętej jedynie z drugiego pliku. Pomocne w tworzeniu plików wynikowych o konstrukcji typu if-then-else.
- --unchanged-line-format=formatlinii
- Użycie formatu formatlinii do wyprowadzenia wspólnej linii wziętej z obu plików. Pomocne w tworzeniu plików wynikowych o konstrukcji typu if-then-else.
Format linii
W formacie określającym sposób wypisania linii
zwykłe znaki oznaczają same siebie; specyfikacje konwersji
zaczynają się od znaku procentu % i mają
jedną z poniższych postaci:
- %l
- zawartość danej linii, nie licząc kończącego ją znaku nowej linii (jeśli jest takowy). Ten format ignoruje czy linia jest niekompletna czy poprawnie zakończona.
- %L
- zawartość danej linii, łącznie z kończącym ją znakiem nowej linii (jeśli jest takowy). Jeżeli linia jest niekompletna, to zachowuje tę niekompletność.
- %[-][szer][.[dokł]]{doxX}n
- numer linii wejściowej, sformatowany w stylu printf.
- %%
- dosłowny znak procentu %.
- %c'C'
- dosłowny znak C. Nie może to być odwrotny ukośnik ani apostrof.
- %c'\O'
- znak o kodzie ósemkowym O.
- -l
-
- --paginate
- Przesłanie wyjścia przez pr, aby podzielić je na strony.
- -t
-
- --expand-tabs
- Rozszerzanie tabulatorów do spacji na wyjściu, aby zachować oryginalne ułożenie tabulatorów pliku wejściowego.
- -T
-
- --initial-tab
- Wyprowadzenie tabulatora zamiast spacji przed tekstem linii w formacie normalnym lub kontekstowym. Powoduje to normalny wygląd tabulatorów w linii.
- -r
-
- --recursive
- Rekurencyjne porównanie wszystkich podkatalogów, jeśli porównywane są katalogi.
- -N
-
- --new-file
- Jeśli podczas porównywania katalogów plik istnieje jedynie w jednym z katalogów, będzie traktowany tak, jakby był obecny w drugim katalogu, ale pusty.
- -P
-
- --unidirectional-new-file
- Jeśli podczas porównywania katalogów plik istnieje jedynie w drugim katalogu, będzie traktowany tak, jakby był obecny w pierwszym katalogu, ale pusty.
- -s
-
- --report-identical-files
- Poinformowanie, jeśli oba pliki są identyczne.
- -x wzorzec
-
- --exclude=wzorzec
- Podczas porównywania katalogów, ignorowanie plików i podkatalogów, których nazwy pasują do wzorca wzorzec.
- -X plik
-
- --exclude-from=plik
- Podczas porównywania katalogów, ignorowanie plików i podkatalogów, których nazwa pasuje do jednego z wzorców podanych w pliku plik.
- -S plik
-
- --starting-file=plik
- Podczas porównywania katalogów rozpoczęcie od pliku plik. Opcja ta jest użyteczna podczas wznawiania przerwanego porównania.
- --horizon-lines=linie
- Nie ignorowanie ostatnich linie linii wspólnego przedrostka oraz pierwszych linie linii wspólnego przyrostka.
- -d
-
- --minimal
- Zmiana algorytmu na taki, który może czasami znaleźć mniejszą liczbę zmian. Spowalnia to działania diff (czasami bardzo znacznie).
- -H
-
- --speed-large-files
- Użycie algorytmów heurystycznych aby przyspieszyć przeszukiwanie dużych plików ze znaczną liczbą rozrzuconych małych zmian.
- -h
- Ta opcja aktualnie nie ma żadnego efektu, ale istnieje dla zgodności z systemem Unix.
- --sdiff-merge-assist
- Wyświetlenie dodatkowych informacji pomocnych dla sdiff. sdiff korzysta z tej opcji gdy uruchamia diff. Użytkownicy nie powinni korzystać z tej opcji bezpośrednio.
- --help
- Wyświetlenie informacji o stosowaniu programu i dostępnych opcjach.
- -v
-
- --version
- Wyświetlenie numeru wersji programu.
KOPIOWANIE¶
Plik ten powstał na podstawie podręcznika info pakietu diffutils.
Copyright (C) 1992, 1993, 1994 Free Software Foundation, Inc.
Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies.
Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one.
Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions, except that this permission notice may be stated in a translation approved by the Foundation.
ZOBACZ TAKŻE¶
cmp(1), comm(1), diff3(1), ed(1), patch(1), pr(1), sdiff(1).
DIAGNOSTYKA¶
Zwracana wartość 0 oznacza, że nie odnaleziono różnic, 1 oznacza znalezienie różnic, a 2 kłopoty.
1 października 1994 | Narzędzia różnicowe GNU |